/*
day477 
2020.12.17 
*/

#include<iostream>
#include<vector>
using namespace std;

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};


class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        int len1=len(headA);
        int len2=len(headB);
        
        int dif=abs(len1-len2);
        if(len1>len2)
        {
        	for(int i=0;i<dif;++i)
        	{
        		headA=headA->next;
			}
		}
		else
		{
			for(int i=0;i<dif;++i)
        	{
        		headB=headB->next;
			}
		}
		
		while(headA&&headB)
		{
			if(headA==headB)
			{
				return headA;
			}
			headA=headA->next;
			headB=headB->next;
		}
		
		return nullptr;
    }
    
    int len(ListNode *head)
	{
		int res=0;
		while(head)
		{
			res++;
			head=head->next;
		 } 
		return res;
	} 
};


int main()
{
	return 0;
 } 
